[小ネタ] Lambda でコンテナイメージを動かした場合の環境変数を確認してみた
テクニカルサポートの hato です。
コンテナイメージの Lambda 関数で、ECS の認証情報を取得する際に利用する環境変数AWS_CONTAINER_CREDENTIALS_FULL_URI
が設定されているか確認する機会がありましたので、小ネタとしてご紹介します。
結論
ドキュメントに記載の環境変数が設定されており、AWS_CONTAINER_CREDENTIALS_FULL_URI
は設定されていない。
AWS Lambda 環境変数の使用 - AWS Lambda
やってみた
次のドキュメントを参考に、bootstrap ファイル内でenv
コマンドを実行しました。
ベースイメージはAmazon Linux 2(public.ecr.aws/lambda/provided:al2
)です。
_HANDLER=function.handler AWS_REGION=ap-northeast-1 AWS_EXECUTION_ENV=AWS_Lambda_Image AWS_LAMBDA_FUNCTION_NAME=hato-container-Lambda AWS_LAMBDA_FUNCTION_MEMORY_SIZE=128 AWS_LAMBDA_FUNCTION_VERSION=$LATEST AWS_LAMBDA_INITIALIZATION_TYPE=on-demand AWS_LAMBDA_LOG_GROUP_NAME=/aws/lambda/hato-container-Lambda AWS_LAMBDA_LOG_STREAM_NAME=2022/08/01/[$LATEST]c7b08b503b3048449078fefb6c712ff6 AWS_ACCESS_KEY_ID=ASIAxxxxxxxxxxxxxxxx AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY AWS_SESSION_TOKEN=AQoDYXdzEJr... AWS_LAMBDA_RUNTIME_API=127.0.0.1:9001 LAMBDA_TASK_ROOT=/var/task LAMBDA_RUNTIME_DIR=/var/runtime TZ=:/etc/localtime LANG=en_US.UTF-8 PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin LD_LIBRARY_PATH=/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib AWS_XRAY_CONTEXT_MISSING=LOG_ERROR AWS_XRAY_DAEMON_ADDRESS=169.254.79.129:2000 AWS_DEFAULT_REGION=ap-northeast-1 PWD=/var/task SHLVL=1 _AWS_XRAY_DAEMON_ADDRESS=169.254.79.129 _AWS_XRAY_DAEMON_PORT=2000 _=/usr/bin/env
ECS 用の環境変数は設定されていない
ドキュメントには記載がありませんが、Greengrass LambdaやCloudShellなど、ECS 以外の AWS サービスでも設定されている事例がありましたので、もしかしたらあるかも?と期待していましたが設定されていないようです。
AWS_CONTAINER_CREDENTIALS_FULL_URI
が設定されていませんので、ECS で稼働するコンテナを Lambda に移行する場合は、AWS_CONTAINER_CREDENTIALS_FULL_URI
がある前提が崩れる点に注意が必要です。
また、試しにメタデータ(169.254.170.2
および169.254.169.254
)に curl を行いましたがエラーになりました。
最後に
この記事が誰かのお役にたてば幸いです。
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。